#ifndef __ENGINE_CONFIG_H__
#define __ENGINE_CONFIG_H__

#pragma once

#include "EngineCompileConfig.h"
#include "Common/NezhaFoundation.h"

namespace Nezha
{

	typedef void* NZ_NativeWindow;
	typedef void* NZ_ModuleHandle;

	class NEZHA_ENGINE_ENTRY EngineConfig
	{
	public:
		EngineConfig();
		virtual ~EngineConfig() {}

		bool loadFromFile(const _string& cfgPath);

		// TODO

		_string mAppName;
		NZ_NativeWindow mWindow;
		NZ_NativeWindow mParentWindow;

		// -1 means default pos in native window system.
		u16 mScreenWidth;
		u16 mScreenHeight;
		u16 mAntiAliasLevel;
		short mWindowPosX;
		short mWindowPosY;

		u8 mColorBufferBits;
		bool mWindowed;
		bool mVsync;
		bool mAttachTestSystem;

		StringArray mInitialPluginNames;

		// TODO

		Str_KeyVals mExtraSettings;

	};

	//////////////////////////////////////////////////////////////////////////
	// hidden

	NZ_NativeWindow InternalCreateNativeWindow(const EngineConfig& cfg);

}//end namespace Nezha

#endif //end __ENGINE_CONFIG_H__